// 导入插件基础类
import plugin from '../../../lib/plugins/plugin.js'
// 导入token验证模块
import { tokenVali } from '../model/deepseek/tokenValidator.js'
// 导入YAML解析库
import YAML from 'yaml'
// 导入文件系统模块
import fs from 'fs'

/**
 * chat类继承自plugin类，用于处理聊天相关的命令
 */
export class chat extends plugin {
    /**
     * 构造函数，初始化插件的基本信息
     */
    constructor() {
        super({
            name: 'fufu_chat_set',
            dsc: '',
            event: 'message',
            priority: 2000,
            rule: [
                {
                    reg: '^#添加token(.*)',
                    fnc: 'addToken'
                },
                {
                    reg: '^#删除token(.*)',
                    fnc: 'deleteToken'
                }
            ]
        })
    }

    /**
     * 添加token
     * @param {Object} e 消息事件对象
     * @returns {Promise<void>} 
     */
    async addToken(e) {
        try {
            let token = '';
            // 根据消息前缀提取token
            if (e.msg.startsWith('#')) {
            token = e.msg.replace(/^#添加token/, '').trim();
            } else {
            token = e.msg.replace(/^\/添加token/, '').trim();
            }
            // 读取配置文件
            let data = YAML.parse(fs.readFileSync('./plugins/NodeUtilities-plugin/config/config.yaml', 'utf8'));
            // 验证token有效性
            let yz = await tokenVali(token);  //传token验证
            if(yz.code = 1) {
                return e.reply(yz.msg);
            }
            // 更新token
            data.DEEQSEEKTOKEN = token;
            // 写入yaml
            fs.writeFileSync('./plugins/NodeUtilities-plugin/config/config.yaml', YAML.stringify(data))
            return e.reply('token设置成功');
        } catch (error) {
            logger.error(error);
            return e.reply('token设置失败');
        }
    }

    /**
     * 删除token
     * @param {Object} e 消息事件对象
     * @returns {Promise<void>} 
     */
    async deleteToken(e) {
        try {
            let token = '';
            // 根据消息前缀提取token
            if (e.msg.startsWith('#')) {
            token = e.msg.replace(/^#删除token/, '').trim();
            } else {
            token = e.msg.replace(/^\/删除token/, '').trim();
            }

            // 读取配置文件
            let data = YAML.parse(fs.readFileSync('./plugins/NodeUtilities-plugin/config/config.yaml', 'utf8'));
            // 检查token是否存在
            if (data.DEEQSEEKTOKEN != token) {
                return e.reply('token不存在');
            }

            // 删除token
            data.DEEQSEEKTOKEN = '';
            // 写入yaml
            fs.writeFileSync('./plugins/NodeUtilities-plugin/config/config.yaml', YAML.stringify(data))
            return e.reply('token删除成功');

        } catch (error) {
            logger.error(error);
            return e.reply('token删除失败');
        }
    }
}